package com.xbongbong.pro.statistic.through.pojo.dto;

import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.paas.toolbox.wrap.QueryIgnore;
import com.xbongbong.pro.statistic.result.pojo.dto.DepAndUserDTO;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Range;

import java.util.Map;

import java.util.List;

/**
 * 统计穿透dto
 * @author zcp
 * @version v1.0
 * @date 2019/4/24 19:54
 * @since v1.0
 */
@Getter
@Setter
@ToString
public class ResultThroughDTO extends BaseDTO {

    /**
     * 分页的页数
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer page;
    /**
     * 分页的每页记录数量
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer pageSize;
    /**
     * 组织架构类型：1员工，2部门
     */
    @Range(min = 1, max = 2, message="dto.msg.resultThrough.companyStructType.Range")
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer companyStructType;
    /**
     * 筛选的部门id
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Long checkedDepId;
    /**
     * 筛选的员工id
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private String checkedUserId;
    /**
     * 筛选的部门idIn(多选)
     */
    private List<Long> checkedDepIdIn;
    /**
     * 筛选的员工idIn(多选)
     */
    private List<String> checkedUserIdIn;
    /**
     * 筛选的部门和员工id(web端)
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private List<DepAndUserDTO> checkedId;
    /**
     * 关联id，如销售阶段id、工单模版id、产品id、合同模版id、客户模版id等、分类id等
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Long refId;
    /**
     * 二层筛选id，可以配合refId。比如阶段筛选formId + stageProcessId
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Long argTwoId;
    /**
     * 字符串数组筛选，可以配合refId。比如阶段筛选formId + 多个code（阶段code集合）
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private List<String> argStrIn;
    /**
     * 省份筛选，当全国筛选时，值为@see MapConstant内存放
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private String province;
    /**
     * 穿透时的时间筛选类型---TimeTypeEnum枚举内存放
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer timeType;
    /**
     * 穿透后开始时间戳
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer startTime;
    /**
     * 穿透后结束时间戳
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer endTime;
    /**
     * 数据字典code
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private String dictionaryCode;
    /**
     * 是否是完成率pk，系统指标当为完成情况pk时，要过滤考核产品
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Boolean performancePk = false;
    /**
     * 穿透系统指标类型（后期自定义指标穿透不需要该值）
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private String systemCode;
    /**
     * 图表id，后期自定义指标穿透可能需要该值，那时该值置为图表id即可（系统指标不需该值）
     */
    private Long id;

    /**
     * 自定义、系统标志
     * @see com.xbongbong.pro.statistic.enums.StatisticsTypeEnum
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Integer statisticsType;

    /**
     * 导出标记(导出时需以scroll进行分页),true为导出
     */
    @Getter(onMethod_ = {@QueryIgnore})
    private Boolean exportFlag;

    /**
     * 资金账户id
     */
    private Long accountId;
    /**
     * 穿透来源页
     */
    private String sourcePage;
    /**
     * 排序字段
     */
    /**
     * 排序字段{"field":"updateTime","sort":"acs"}
     */
    private Map<String,String> sortMap;
    /**
     * 排序字段fieldType
     */
    private Integer filedType;
    /**
     * 图表中心、经销商相关筛选项
     **/
    private List<JSONObject> search;
}
